﻿// <copyright file="Simulation.cs" company="City of Portland, BES-ASM">
// </copyright>
// <summary>Simulation class</summary>

namespace BESASM.EMGAATS.BusinessClasses
{
  using System;
  using System.Collections.Generic;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;

  /// <summary>
  /// Manages the pairing of a Model and a Storm
  /// </summary>
  public class Simulation : BESASM.EMGAATS.BusinessClasses.ISimulation
  {
    /// <summary>
    /// Gets or sets the name of the simulation
    /// </summary>
    public string SimulationName { get; set; }

    /// <summary>
    /// Gets or sets the simulation description
    /// </summary>
    public string SimulationDescription { get; set; }

    /// <summary>
    /// Gets or sets the simulation start time
    /// </summary>
    public DateTime SimulationStartDateTime { get; set; }

    /// <summary>
    /// Gets or sets the simulation end time
    /// </summary>
    public DateTime SimulationEndDateTime { get; set; }

    /// <summary>
    /// Gets or sets the Reporting start date
    /// </summary>
    public DateTime ReportStartDateTime { get; set; }

    /// <summary>
    /// Gets or sets the Reporting time step
    /// </summary>
    public DateTime ReportTimeStep { get; set; }

    /// <summary>
    /// Gets or sets the wet weather hydrologic time step
    /// </summary>
    public DateTime WetTimeStep { get; set; }

    /// <summary>
    /// Gets or sets the dry weather hydrologic time step
    /// </summary>
    public DateTime DryTimeStep { get; set; }

    /// <summary>
    /// Gets or sets the hydraulic model time step
    /// </summary>
    public DateTime RoutingStep { get; set; }

    /// <summary>
    /// Gets or sets the storm for the simulation
    /// </summary>
    public Storm Storm { get; set; }

    /// <summary>
    /// Gets or sets the storm type
    /// </summary>
    public StormType StormType { get; set; }

    /// <summary>
    /// Gets or sets the storm reference, applies only to synthetic storm type
    /// </summary>
    public string StormReference { get; set; }

    /// <summary>
    /// Gets or sets the storm time step, set by UI for virtual gage and raingage storm types
    /// </summary>
    public DateTime StormTimeStep { get; set; }
  }
}
